<template>
    <div class="edit_container">
        <div class="btn_box">
            <el-button @click.stop="goBack">返回</el-button>
        </div>
        <FacialNerve ref="facialNerve" form-type="edit" :patient-info="patientInfo" :assess-info="assessInfo"
            :doctor-type="doctorType" />
        <div class="submit_btn_box">
            <el-button type="primary" :loading="submitLoading" @click.stop="submit">保存</el-button>
        </div>
    </div>
</template>

<script>
import FacialNerve from '../../assessSys/components/facialNerve.vue'
import { nerveDetail, nerveEvaluate } from '@/api/treatment/treatment.js'
import { queryPatientInfo } from '@/api/residentPhysician/cureBilling.js'
import moment from 'moment'
import { mapGetters } from 'vuex'
import estimate from '@/mixins/estimate.js'

export default {
    name: 'FacialNerveEdit',
    components: { FacialNerve },
    mixins: [estimate],
    data() {
        return {
            assessId: 0,
            type: 0,
            source: 1,
            patientId: 0,
            patientInfo: {},
            assessInfo: {},
            submitLoading: false
        }
    },
    computed: {
        ...mapGetters([
            'user'
        ]),
        doctorType() {
            const sourceMap = {
                1: 'hospital',
                2: 'outpatient',
                3: 'therapists'
            }
            return sourceMap[this.source]
        }
    },
    mounted() {
        this.type = this.$route.query.type || 0
        this.source = this.$route.query.source
        this.assessId = this.$route.query.id
        this.patientId = this.$route.query.patientId
        this.getAssessInfo()
    },
    methods: {
        getAssessInfo() {
            // 执行获取治疗详情
            if(this.assessId == 0 && this.patientId == 0){
                this.$message.error('缺少医嘱ID或者患者ID')
                return
            }
            if(this.assessId){
                nerveDetail({
                    type: this.type,
                    evaluateSource: this.source,
                    relationId: this.assessId
                }).then(res => {
                    this.patientInfo = {
                        ...res.content,
                        genderName: res.content.gender === 0 ? '女' : '男'
                    }
                    if (res.content.evaluateTime) {
                        res.content.evaluateTime = moment(res.content.evaluateTime).format('YYYY-MM-DD HH:mm:ss')
                    } else {
                        res.content.evaluateTime = '/'
                    }

                    if (!res.content.evaluateUser) {
                        res.content.evaluateUser = this.user.realname
                    }
                    this.assessInfo = {
                        ...this.assessInfo,
                        ...res.content
                    }
                })
            }else{
                queryPatientInfo({
                    page: 1,
                    size: 10,
                    hisPatientId: this.patientId
                }).then(response => {
                    let { code, content } = response;
                    let patientInfo = {}
                    if (code === 0 && content) {
                        patientInfo = content[0];
                        console.log(patientInfo)
                    } else {
                        patientInfo = {};
                    }
                    this.patientInfo = {
                        patientName: patientInfo.patientName,
                        genderName: patientInfo.gender === 0 ? '女' : '男',
                        age: patientInfo.age,
                        departmentName: patientInfo.departmentName,
                        admissionNum: patientInfo.admissionNum,
                        sickRegion: patientInfo.sickRegion,
                        bedNum: patientInfo.bedNum
                    }
                    let estimate3 = this.getEstimate(this.source, this.patientId, 3)
                    if(estimate3){
                        let localAssessInfo = this.getAssessInfoByEstimate(estimate3)
                        this.assessInfo = {
                            ...this.patientInfo,
                            ...localAssessInfo,
                            evaluateUser: this.user.realname,
                            evaluateTime: '/',
                            addr: patientInfo.addr,
                            phoneNum: patientInfo.phoneNum,
                            chiefComplaint: patientInfo.chiefComplaint
                        }
                    }else{
                        this.assessInfo = {
                            ...this.patientInfo,
                            evaluateUser: this.user.realname,
                            evaluateTime: '/',
                            addr: patientInfo.addr,
                            phoneNum: patientInfo.phoneNum,
                            chiefComplaint: patientInfo.chiefComplaint
                        }
                    }
                    
                }).catch(error => {
                    this.$notify({
                        title: '提示',
                        message: '网络出差了,请稍后再试',
                        type: 'danger'
                    });
                })
            }
        },
        goBack() {
            this.$store.dispatch('tagsView/delView', this.$route)
            this.$router.back()
        },
        submit() {
            if(this.assessId){
                this.$refs.facialNerve.getFormData().then(data => {
                    this.submitLoading = true
                    nerveEvaluate({
                        relationId: this.assessId,
                        evaluateSource: this.source,
                        ...data
                    }).then(res => {
                        this.$message.success('成功')
                        this.$store.dispatch('tagsView/delView', this.$route)
                        this.$router.back()
                    }).catch(err => {
                        this.$message.error(err.msg)
                    }).finally(() => {
                        this.submitLoading = false
                    })
                })
            }else{
                this.$refs.facialNerve.saveLocalFormData(this.source, this.patientId).then(() => {
                    this.$message.success('成功')
                    this.$store.dispatch('tagsView/delView', this.$route)
                    this.$router.back()
                })
            }
        }
    }
}
</script>

<style lang="scss" scoped>
@import url('./style.scss');
</style>
